package global

import (
	"fmt"
	"github.com/go-redis/redis/v8"
	"github.com/spf13/viper"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"gorm.io/gorm"
)

//安装viper配置工具 go get -u github.com/spf13/viper
//安装日志zap go get -u go.uber.org/zap

//初始化 global全局配置信息

//初始化全局信息载体

var Config = new(config)

// 实例变量
var (
	// zap 日志等级
	level zapcore.Level
	// zap 配置项
	options []zap.Option
	// ZapLog Log 实例
	ZapLog *zap.Logger
	// DB gormDB 实例
	DB          *gorm.DB
	RedisClient *redis.Client
)

// InitGlobal 初始化全局配置
func InitGlobal() {
	//test git
	v := viper.New()
	v.SetConfigFile("config/app_dev.yaml")
	//读取文件
	err := v.ReadInConfig()
	if err != nil { // 处理读取错误
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}
	// 将配置赋值给全局变量 Config
	if err := v.Unmarshal(&Config); err != nil {
		fmt.Println("Unmarshal fail:", err)
	}
	////初始化日志 ZapLog
	InitializeLog()
	//初始化redis RedisClient
	InitRedis()
	////初始化数据库 DB
	DB = InitializeDB()
}
